// 6.35 若已知两棵二叉树B1和B2皆为空，或者皆不空且B1的左、右子树和B2的左、右子树分别相似，则称二叉树B1和B2相似。试编写算法，判别给定两棵二叉树是否相似。
#include <stdio.h>
#include <stdlib.h>
#include "E:\Desktop\data_struct\5TREE\1_bin_tree\creat.h"
bool fun_6_36(tree *root1, tree *root2)
{
    if (!root1 && !root2)
    {
        return true;
    }
    else
    {
        if (root1 != NULL && root2 != NULL)
            return fun_6_36(root1->left, root2->left) && fun_6_36(root1->right, root2->right);
    }
    return false;
}

int main()
{
    /*******************code*******************/
    int n = 15;
    int a1[15] = {1,
                  2, 3,
                  4, 5, NULL, NULL,
                  NULL, 6, 7, NULL, NULL, NULL, NULL, NULL};
    tree *root1;
    CreatTree(root1, a1, n, 0);
    /*******************code*******************/
    int a2[15] = {1,
                  2, 3,
                  4, 5, NULL, NULL,
                  NULL, 6, NULL, NULL, NULL, NULL, NULL, NULL};
    tree *root2;
    CreatTree(root2, a2, n, 0);
    if (fun_6_36(root1, root2))
    {
        printf("YES");
    }
    else
    {
        printf("NO");
    }

    /******************************************/
    printf("\n\n****************************\n");
    printf("Press Enter key to continue\n");
    getchar();
    return 0;
    /******************************************/
}
